package studentManage.util;

import java.io.File;
import java.util.ArrayList;
import java.util.Scanner;

import Util.TestUtil;
import studentManage.StudentTest;
import studentManage.model.MajorModel;

public class MajorUtil {

	/**
	 * 专业信息集合
	 */
	public static ArrayList<MajorModel> majors = new ArrayList<MajorModel>();

	/**
	 * 创建存放专业类的文件
	 */
	static String path = TestUtil.creatPath("StudentManage","majors");

	static Scanner sc = new Scanner(System.in);

	// 管理员的用户名和密码
	private static String admin = "admin";
	private static String pass = "123456";

	public String input() {
		System.out.print("请输入专业代号：");
		String majCode = sc.nextLine();
		return majCode;
	}

	/**
	 * 登录
	 */
	public void login() {
		StudentTest stu = new StudentTest();
		System.out.print("请输入管理员账号：");
		String admin = sc.nextLine();

		System.out.print("请输入密码：");
		String pass = sc.nextLine();

		if (admin.equals(MajorUtil.admin) && pass.equals(MajorUtil.pass)) {
			System.out.println("登录成功！");
			stu.manHome();
			return;
		}
		System.out.println("用户名或密码错误！");
		return;
	}

	/**
	 * 全部专业信息
	 */
	public void selectAll() {
		for (MajorModel maj : majors) {
			info(maj);
		}
	}

	public void selectByName() {
		System.out.print("请输入专业名称：");
		String name = sc.nextLine();

		for (MajorModel maj : majors) {
			if (maj.getName().equals(name)) {
				info(maj);
			}
		}
	}

	/**
	 * 专业信息
	 * 
	 * @param maj
	 */
	public void info(MajorModel maj) {
		System.out.println("-----------------");
		System.out.println("专业代码：" + maj.getMajCode());
		System.out.println("专业名：" + maj.getName());
		System.out.println("本专业学生：");
		String[] stu = maj.getStuId();
		if (stu == null) {
			System.out.println("本专业暂无学生！");
			System.out.println("-----------------");
			return;
		}

		int k = 1;
		for (String s : stu) {
			if (k % 5 == 0)
				System.out.println();
			System.out.print(s + "\t");
			k++;
		}
		System.out.println();
		System.out.println("-----------------");
	}

	/**
	 * 添加专业
	 */
	public void addMaj() {
		MajorModel major = new MajorModel();

		System.out.print("请输入您要添加的专业id：");
		int id = TestUtil.abnormal();

		System.out.print("请输入您要添加的专业代码：");
		String majCode = sc.nextLine();

		System.out.print("请输入您要添加的专业名称：");
		String name = sc.nextLine();

		major.setId(id);
		major.setMajCode(majCode);
		major.setName(name);
		major.setStuId("0");

		majors.add(major);

		TestUtil.write(path, majors);// 序列化
	}

	/**
	 * 根据专业代号查找
	 * 
	 * @return
	 * 
	 */
	public MajorModel select(String majCode) {

		for (MajorModel maj : majors) {
			if (maj.getMajCode().equals(majCode)) {
				return maj;
			}
		}
		return null;
	}

	/**
	 * 修改专业信息
	 * 
	 * 只能修改专业名称
	 * 
	 * @param maj
	 */
	public void update(MajorModel maj) {
		info(maj);
		System.out.print("请输入您要修改的专业名称：");
		String name = sc.nextLine();

		maj.setName(name);

		TestUtil.write(path, majors);
	}

	/**
	 * 初始化一组专业数据
	 */
	public static void init() {
		MajorModel major = new MajorModel();

		major.setId(1);
		major.setMajCode("s0001");
		major.setName("软件工程");
		major.setStuId("1");
		majors.add(major);

		TestUtil.write(path, majors);// 序列化
	}

	/**
	 * 读取数据
	 * 
	 * 反序列化
	 */
	static {
		judge();
		majors = TestUtil.read(path);
	}

	/**
	 * 判断文件是否有数据
	 */
	public static void judge() {
		File f = new File(path);
		if (f.length() == 0) {
			init();
		}
	}

	/**
	 * 判断专业代号是否存在
	 * 
	 * @param majCode
	 * @return
	 */
	public boolean exisit(String majCode) {
		for (MajorModel maj : majors) {
			if (maj.getMajCode().equals(majCode)) {
				return true;
			}
		}
		return false;
	}

	public static void main(String[] args) {
		MajorUtil m = new MajorUtil();

		m.login();
	}
}
